package framework;

//import java.awt.AWTException;
//import java.awt.Robot;
//import java.awt.event.KeyEvent;
import java.io.File;

import junit.framework.Assert;

import autoitx4java.*;
import com.jacob.com.LibraryLoader;

/**
 * Позволяет работать со стандэлон окнами,
 * в частности с окном выбора сертификата
 */
public class BaseAutoIt extends BaseEntity{

	@Override
	protected String formatLogMsg(String message) {
		return null;
	}

	//Windows Security
	private static final String TITLE_SECURITY = "[CLASS:#32770]";
	private static final String TEXT_IN_WND = "OK";
	private static final String OK_BTN = "[CLASSNN:Button1]";
	private static final long SMALL_TIMEOUT = 5000;

	/** Выбирает первый сертификат и нажимает ОК
	 * @param warningCount количество подтверждений
	 */
	public static void approveSecurityWarning(int warningCount){
		File file;
		if(System.getProperty("os.arch").contains("86")) {
			file = new File(System.getProperty("user.dir").replace("target", "")+"/lib", "jacob-1.17-M2-x86.dll"); //path to the jacob dll
		} else {
			file = new File(System.getProperty("user.dir").replace("target", "")+"/lib", "jacob-1.17-M2-x64.dll"); //path to the jacob dll
		}
		System.setProperty(LibraryLoader.JACOB_DLL_PATH, file.getAbsolutePath());
		LibraryLoader.loadJacobLibrary();
		AutoItX autoit = new autoitx4java.AutoItX();
		for(int i = 1; i<=warningCount; i++){
			Assert.assertEquals("Окно выбора сертификата не появилось " + i + "-й раз.",true, autoit.winWait(TITLE_SECURITY, TEXT_IN_WND, Integer.parseInt(props.getProperty("defaultConditionTimeout"))));
			logger.info("Окно выбора сертификата появилось " + i + "-й раз.");
			autoit.winActivate(TITLE_SECURITY);
			autoit.controlClick(TITLE_SECURITY, TEXT_IN_WND, OK_BTN);
			/*try{
				Robot robot = new Robot();
				robot.keyPress(KeyEvent.VK_ENTER);
			}catch(AWTException e){}*/
			logger.info("Кнопка 'OK' :: Клик");
			browser.sleep(SMALL_TIMEOUT);
		}
		Assert.assertEquals("Окно выбора сертификата не закрылось.",true, autoit.winWaitClose(TITLE_SECURITY, TEXT_IN_WND, Integer.parseInt(props.getProperty("defaultConditionTimeout"))));
	}
}
